//
//  main.m
//  C01_基础知识
//
//  Created by dllo on 15/11/17.
//  Copyright © 2015年 dllo. All rights reserved.
// info

/** 导入Foundation框架 
*/
#import <Foundation/Foundation.h>
/**
 *主函数，一个程序只有一个主函数（main）。程序都是下哦那个主函数进入。
 * @param argc 参数的个数
 * @param argv[] 参数的值（数组）
 * 
 * return int 整型
 */
int main(int argc, const char * argv[]) {
    
#pragma mark -知识点1
    
    /** 进制转换 (二进制 <--> 十进制)*/
    
    /** 110010 十进制 */
    
    
    /** 100 转换二进制 */

    
#pragma mark - 知识点2  基本类型
    
#if 0 /**< 条件编译 >*/
    
    
    
    /** 几种基本数据类型 */
    
    /** char类型， 占一个字节  */
     char c = 'a';
    
    printf("c size :%ld\n", sizeof(char));
     
    /** int类型（整型）， 占4个字节 */

    int a = 100;
    
    /** float 类型（浮点类型）， 占4个字节 */
    
    float f = 3.14f;

    /** 短整型 */
    short s = 200;
    
    /** 长整形 */
    long l = 500;
    
    /** double 类型 */
//    double d = 3.115;
    
#endif
    
#if 0 /**  变量和常量 */
    
    /** 变量命名的规范
     * 只能由数字,字母,_,$组成, 不能以数字开头.
     * 不能和系统保留字重复. 如: int, if, 等
     * 见名知意: 如: age, number, 等
     * 驼峰命名法, 当多个单系组成时, 后面的单词首字母大写. 如: withNumber
     */
    
    
    
    /** 定义一个整形变量a,同时赋值(100) */
    
    int a = 100;
    
    a = 2000;
    
    /** 输出a */
    printf("a:%d\n", a);
    
    int b = 200;
    
    printf("b:%d\n", b);
    
    
    
    printf("over!");
    
#endif
    
    
//#if 0 /* 栈区内存如何分配 */
//   
//    /**
//     * 栈区, 从高到低分配内存
//     * 栈区内存由系统管理(开辟和回收)
//     */
//    
////    

//    
    
//#if 0 /**  交换两个int型变量的值. */
//      int number1 = 100;
//    int number2 = 200;
//    
//    int tempnam(<#const char *#>, <#const char *#>) = number1;
//    number1 = number2;
//    number2 = c;
//    int c = 0;
//    c = number1;
//    number2 = c;
//    printf("number1 = %d, number2 = %d\n", number1, number2);
//#endif
//

    
#if 0 /** char型 */
    
    /** char类型本质就是整型,特殊的整形,只有1个字节 */
    char c = 'a'; /**< 字符用'' */
    printf("c:%d\n", c);
    printf("c:%c\n", c);

#endif
    
#pragma mark - 知识点3  运算符
#if 0
    /** '=' 赋值运算符 */
    
    /** 算数运算符 */
    
    int a = 100;
    int b = 12;
//    b = a / b; /**< 除数不能为0 */
    
    printf("a+b= %d\n", a+b );
    printf("a-b= %d\n", a-b );
    printf("a*b= %d\n", a*b );
    printf("a 除于 b = %d\n", a/b);
    printf("a对b取余 = %d\n", a%b);
    
    
    /** ++, -- 自增, 自减 */
    int c = 0, d = 0;
    
    c = a++;

    printf("c = %d, a = %d\n", c, a);

    d = ++a;
    printf("d = %d, a = %d\n", d, a);
    
    
    /** 复合运算符: +=, -=, *=, /=, %= 
     * a += b, 相当于 a = a + b
     */
    
    printf("a = %d", a += b);
    
#endif

    
    


#pragma mark - 知识点4 格式化输出
    
#if 0
    
    /** 
     *printf(const char *restrict, ...) 是函数,我们是通过函数实现输出
     */
    
    printf("printf函数, 输出双引号之间的内容");
    
    printf("h\tjk\n%%");
    printf("jdkla\\");
    
    
    int a = 100 ;
    int b = 200 ;
    printf("a的值是:%d\n, b的值是%d\n", a, b);
    int c = 300;
    printf("c:%4d\n", c);
    /**< 4的含义是最少占4位, 如果不够4位, 默认用空格补齐 */
    printf("c:%04d\n", c);
    /**< 04 占4位, 如果位数不够,用0补齐 */
    printf("c:%-4d\n", c);
    /**< -4左对齐, */
    
    float f = 3.1415;
    
    printf("f:%f\n", f);
    
    printf("f:%.2f\n", f); /**< .2 小数点保留两位 */
    
    float number1 = 1;
    float number2 = 2;
    printf("number1/number2:%.2f\n", number1
           / number2);
    
    printf("number1/number2:%g\n", number1 / number2 );//**< %g, 自动保留小数点位数*/
    
    
    
#endif
    
    
#pragma mark - 知识点五 格式化输入
    
#if 0
    int a = 0;
    
    printf("a的内存地址为:%p",&a);
    
    printf("请输入整数:\n");
    scanf("%d", &a);/**< &符号,取址(取出内存地址). */
    
    printf("a = %d\n", a);
    
    
    
    
    
    
#endif
    
#if 0
    /** 连续输入 */
    int a = 0;
    int b = 0;
    
    printf("请输入两个整数:");
    scanf("%d%d", &a, &b);
    /**< 注意:格式化输入,要和""之间定义的格式一样输入
     */
    
//    scanf("%d\n", &a);  注意  scanf后面不能有\n */
    
    
    printf("a = %d, b = %d\n", a, b);
    
#endif

#if 0/** 练习   输入两个整数,计算他们的和,并且输出 */
    
    int a = 0;
    int b = 0;
    
    printf("请输入两个整数:");
    
    scanf("%d%d", &a, &b);
    
    int sum = a+b;
    printf("sum = %d\n", sum);
    
    
    
    
    
    
#endif
    
    /** 作业
     打印星星*/
#if 0
    int a = 1;
    int b = 2;
    int c = a;
    a = b;
    b = c;
   
    
    printf("a = %d, b = %d\n", a, b);
#endif
#if 0
    int a = 1;
    int b = 2;
    int c = a;
    a = b;
    b = c;
    printf("a = %d, b=%d\n", a, b);
#if 0
    int a = 1;
    int b = 2;
    int c = a;
    a = b;
    b = c;
    printf("a=%d, b=%d\n", a, b);
    
#if 0
    int a = 1;
    int b = 2;
    int c = a;
    a = b;
    b = c;
    printf("a=%d, b=%d\n", a, b);
    
    
    
    
    
#endif

#endif
#endif
#if 0
  
    printf("      *      \n \n");
    
    
    
    
    
    
    
    printf("    *   *  \n \n");
    
    
    
    
    
    
    
    printf("  *   *   * \n \n");
    
    
    
#endif
    

    /** 美元*/
#if 0
    
    float amount = 0;
    
    printf("Enter an amount:");
    
    scanf("%f", &amount);
    
    float temp = amount * 0.05;
    amount = temp + amount;
    
    
    printf("With tax adds:$%.2f\n", amount);
    
    
    
    
    
#endif
    
  /**  输入整数,和,差,鸡,余 */
 
#if 0
    int a = 0;
    int b = 0;
    printf("请输入两个整数:");
    scanf("%d%d", &a, &b);
    printf("a+b %d\n", a+b);
    printf("a*b %d\n", a*b);
    printf("a/b %d\n", a/b);
    printf("a%%b %d\n", a%b);
    
    
    
    
    
    
#endif

#if 1
    int a = 10;
    int b = 20;
    int c = a;
    a = b;
    b = c;
    printf("a=%d, b=%d\n", a, b);
    
    
    
    
    
#endif
    
    
    
        return 0;
}

























